#ifndef SQLAUTOCOMPLETE_H
#define SQLAUTOCOMPLETE_H

#include <QObject>
#include <QStringList>
#include <QMap>
#include <QSqlDatabase>
#include <QCompleter>
#include <QTextEdit>

class SqlAutoComplete : public QObject
{
    Q_OBJECT

public:
    explicit SqlAutoComplete(QObject *parent = nullptr);
    
    void setDatabase(const QSqlDatabase &database);
    void updateCompletionModel();
    QCompleter* completer() const;
    
    // 获取不同类型的补全项
    QStringList getKeywords() const;
    QStringList getFunctions() const;
    QStringList getTables() const;
    QStringList getColumns(const QString &tableName) const;
    
private:
    void initializeKeywords();
    void initializeFunctions();
    void loadDatabaseObjects();
    
    QSqlDatabase m_database;
    QCompleter *m_completer;
    QStringList m_keywords;
    QStringList m_functions;
    QStringList m_tables;
    QMap<QString, QStringList> m_columns;  // 表名到列名列表的映射
    QStringList m_allCompletions;  // 所有补全项的列表
};

#endif // SQLAUTOCOMPLETE_H